package br.gov.mi.corporativo.dominio.boundary.rhmi.funcionariocargo;

import java.util.Date;
import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;

import br.gov.mi.corporativo.dominio.entidade.rhmi.FuncionarioCargo;


@Path("funcionarioscargos")
public class FuncionarioCargoRestAdapter extends SpringBeanAutowiringSupport {
	
	@Autowired
	private FuncionarioCargoEndPoint service;
	
	@GET
	@Produces({MediaType.APPLICATION_JSON})
	public Iterable<FuncionarioCargo> recuperarTodos(){
		return service.recuperarTodos();
	}
	
	@GET
	@Path("/id/{idFuncionarioCargo}")
	@Produces({MediaType.APPLICATION_JSON})
	public FuncionarioCargo recuperarPorIdFuncionarioCargo(@PathParam("idFuncionarioCargo")Long idFuncionarioCargo){
		return service.recuperarPorIdFuncionarioCargo(idFuncionarioCargo);
	}
	
	@GET
	@Path("/funcionario/{funcionarioByIdFuncionario}")
	@Produces({MediaType.APPLICATION_JSON})
	public FuncionarioCargo recuperarPorFuncionarioByIdFuncionario(@PathParam("funcionarioByIdFuncionario")Long funcionarioByIdFuncionario){
		return service.recuperarPorFuncionarioByIdFuncionario(funcionarioByIdFuncionario);
	}
	
	@GET
	@Path("/funcionariochefe/{funcionarioByIdFuncionarioChefeImediato}")
	@Produces({MediaType.APPLICATION_JSON})
	public FuncionarioCargo recuperarPorFuncionarioByIdFuncionarioChefeImediato(@PathParam("funcionarioByIdFuncionarioChefeImediato")Long funcionarioByIdFuncionarioChefeImediato){
		return service.recuperarPorFuncionarioByIdFuncionarioChefeImediato(funcionarioByIdFuncionarioChefeImediato);
	}
	
	@GET
	@Path("/situacao/{situacaoFuncional}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioCargo> recuperarPorFuncionarioSituacaoFuncional(@PathParam("situacaoFuncional")Long situacaoFuncional){
		return service.recuperarPorSituacaoFuncional(situacaoFuncional);
	}
	
	@GET
	@Path("/unidadelotacao/{unidadeEstruturaByIdUnidadeEstruturaLotacao}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioCargo> recuperarPorFuncionarioUnidadeEstruturaByIdUnidadeEstruturaLotacao(@PathParam("unidadeEstruturaByIdUnidadeEstruturaLotacao")Long unidadeEstruturaByIdUnidadeEstruturaLotacao){
		return service.recuperarPorUnidadeEstruturaByIdUnidadeEstruturaLotacao(unidadeEstruturaByIdUnidadeEstruturaLotacao);
	}
	
	@GET
	@Path("/cargocomissionado/{cargoComissionado}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioCargo> recuperarPorFuncionarioCargoComissionado(@PathParam("cargoComissionado")Long cargoComissionado){
		return service.recuperarPorCargoComissionado(cargoComissionado);
	}
	
	@GET
	@Path("/cargo/{cargo}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioCargo> recuperarPorFuncionarioCargo(@PathParam("cargo")Long cargo){
		return service.recuperarPorCargo(cargo);
	}
	
	@GET
	@Path("/unidadeexercicio/{unidadeEstruturaByIdUnidadeEstruturaExercicio}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioCargo> recuperarPorFuncionarioUnidadeEstruturaByIdUnidadeEstruturaExercicio(@PathParam("unidadeEstruturaByIdUnidadeEstruturaExercicio")Long unidadeEstruturaByIdUnidadeEstruturaExercicio){
		return service.recuperarPorUnidadeEstruturaByIdUnidadeEstruturaExercicio(unidadeEstruturaByIdUnidadeEstruturaExercicio);
	}
	
	@GET
	@Path("/datainicio/{dtInicio}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioCargo> recuperarPorFuncionarioDtInicio(@PathParam("dtInicio")Date dtInicio){
		return service.recuperarPorDtInicio(dtInicio);
	}
	
	@GET
	@Path("/datatermino/{dtTermino}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioCargo> recuperarPorFuncionarioDtTermino(@PathParam("dtTermino")Date dtTermino){
		return service.recuperarPorDtTermino(dtTermino);
	}
	
	@GET
	@Path("/nomeautoridade/{nmAutoridade}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioCargo> recuperarPorFuncionarioNmAutoridade(@PathParam("nmAutoridade")String nmAutoridade){
		return service.recuperarPorNmAutoridade(nmAutoridade);
	}
	
	@GET
	@Path("/escalao/{nrEscalao}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioCargo> recuperarPorFuncionarioNrEscalao(@PathParam("nrEscalao")String nrEscalao){
		return service.recuperarPorNrEscalao(nrEscalao);
	}
	
	@GET
	@Path("/tipogratificacao/{csTipoGratificacao}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioCargo> recuperarPorFuncionarioCsTipoGratificacao(@PathParam("csTipoGratificacao")String csTipoGratificacao){
		return service.recuperarPorCsTipoGratificacao(csTipoGratificacao);
	}
	
	@GET
	@Path("/cargahoraria/{cargahoraria}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioCargo> recuperarPorFuncionarioNrCargaHoraria(@PathParam("nrCargaHoraria")Long nrCargaHoraria){
		return service.recuperarPorNrCargaHoraria(nrCargaHoraria);
	}
	
	@GET
	@Path("/cargoefetivo/{stCargoEfetivo}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioCargo> recuperarPorFuncionarioStCargoEfetivo(@PathParam("stCargoEfetivo")String stCargoEfetivo){
		return service.recuperarPorStCargoEfetivo(stCargoEfetivo);
	}
	
	@GET
	@Path("/registro/{stRegistro}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioCargo> recuperarPorFuncionarioStRegistro(@PathParam("variavel")String stRegistro){
		return service.recuperarPorStRegistro(stRegistro);
	}
	
	
	
}
